/**
 * 
 * @param {*} data 数据对象
 * @param {*} key 键名
 * @param {*} value 值
 */
export default function defineReactive(data, key, val) {
  // 判断参数的个数
  if (arguments.length === 2) {
    val = data[key]
  }

  Object.defineProperty(data, key, {
    // 可枚举
    enumerable: true,
    // 可以被配置，比如 可以被 delete
    configurable: true,
    get() {
      console.log('获取值');
      return val;
    },
    set(newValue) {
      console.log('设置值');
      if (val === newValue) {
        return;
      }
      val = newValue;
    }
  });
}